package com.css.fxfzypg.modules.maps.service;

import com.css.fxfzypg.modules.baseData.entity.FaultageEntity;
import com.css.fxfzypg.modules.resultupload.repository.entity.ResultMainEntity;

import java.util.List;

public interface SetEarthquakeMapService {
    //根据任务ID查询任务区域行政区划code列表
    public List<String> getAllCodeListByTaskId(String taskId);

    //根据1个任务地区查询行政区划code
    public String getCodeByTaskDistrict(String taskDistrict);

    //根据任务ID获取任务区域内的相交的断层信息
    public List<FaultageEntity> getIntersectionFaultByTaskId(String taskId);

    //判断经纬度是否在任务区域内部（不包括边线）
    public boolean isTaskRegionContainsLonLat(String taskId,String lonlat);

    //判断经纬度是否在任务区域边线上（不包括区域内部）
    public boolean isTaskRegionTouchesLonLat(String taskId,String lonlat);

    //根据全部经纬度字符串获取任务区域内的经纬度字符串（多点相交）
    public String getLonLatsStringByTaskId(String taskId,String lonlatsString);

    //根据经纬度字符串查询全部经纬度及行政区划省市区县信息字符串（经度,纬度,省,市,区县,乡镇;）
    public String queryAllLonLatProvinceCityCountyNameStringByLonLatsString(String lonlatsString);

    //根据经纬度查询行政区划省市区县信息字符串（省,市,区县,乡镇）
    public String queryProvinceCityCountyNameStringByLonLat(String lon,String lat);

    //根据经纬度查询行政区划--省份code和名称
    public List<String> queryProvinceByLonLat(String lon,String lat);

    //根据经纬度查询行政区划--市code和名称
    public List<String> queryCityByLonLat(String lon,String lat,String provinceCode);

    //根据经纬度查询行政区划--区县code和名称
    public List<String> queryCountyByLonLat(String lon,String lat,String cityCode);

    //根据经纬度查询行政区划--乡镇名称
    public List<String> queryTownNameByLonLat(String lon,String lat,String province,String city,String county);

    //获取任务范围最小矩形的经纬度值数组
    public List<Double> getTaskRegionExtent(String taskId);

    //获取任务范围的正方形公里格网网格线和震中位置经纬度列表（以右上角为初始点）
    public List<List<Double>> getSquareGridCenterLonLatList(String taskId,String kilometer);

    //创建地震影响场
    public String createInfluenceEllipse(String lon,String lat,String long_x,String short_y,String angle,String min_long_x,String min_short_y);

    //获取任务区域的空间数据
    public String getGeomByTaskRegion(String taskRegion);

    //根据taskId，查询全部评估结果列表
    public List<ResultMainEntity> getResultTotalByTaskId(String taskId);

    //根据taskId和序号，查询全部评估结果详情列表
    public List<ResultMainEntity> getResultTotalDetailByTaskIdNum(String taskId,String num);

    //根据taskId，查询全部设定地震的震级列表
    public List<String> queryInfluencefliedLevelListByTaskId(String taskId);

    //根据taskId、序号，查询震级列表
    public List<String> queryInfluencefliedLevelList(String taskId,String num);

    //根据taskId、序号，查询角度列表
    public List<String> queryInfluencefliedAngleList(String taskId,String num);

    //根据taskId、震级、查询类型、序号总个数，按序号从小到大排序查询全部评估结果（未选择角度：最小值,最大值）
    public List<List<String>> queryAllEvaluateResultTotalDetails(String taskId,String level,String type,String lengthStr);

    //根据查询类型、taskId、震级、角度、序号、经度、纬度，查询评估结果（选择角度：1条数据）
    public List<List<String>> queryEvaluateResultTotalDetailsByAngle(String type,String taskId,String level,String angle,String num,String longitude,String latitude);

    //根据taskId、震级、角度、序号、经度、纬度，按烈度从小到大排序查询地震影响场
    public List<List<String>> queryInfluencefliedEllipse(String taskId,String level,String angle,String num,String longitude,String latitude);

    //根据起点、终点的经纬度查询与正东方向的夹角[0-180]
    public String queryPointAzimuthAngleEast(String startLon,String startLat,String endLon,String endLat);

    //根据起点、终点的经纬度查询与正北方向的夹角[0,360)
    public String queryPointAzimuthAngle(String startLon,String startLat,String endLon,String endLat);

    //查询P1P2P3夹角,如果angle值大于180则夹角为360-angle，否则夹角为angle，夹角范围为[0,180]
    public String queryP1P2P3Angle(String P1LonLat,String P2LonLat,String P3LonLat);

    //查询一个经纬度点附近最近的断层线空间数据
    public String getClosestFaultageGeomByLonLat(String lon,String lat);

    //查询点到断层线的最短线段
    public String getShortestLineFaultageGeomByLonLat(String lon,String lat);

    //查询点到断层线上的最短距离的点
    public String getClosestPointFaultageGeomByLonLat(String lon,String lat);

    //查询点到P1P2线段的距离
    public String getDistanceByLonLatP1P2(String lon,String lat,String P1LonLat,String P2LonLat);

    //根据经纬度查询最近断层切线角度（与正东方向的夹角，[0,180]）
    public String getClosestFaultageAngleByLonLat(String lon,String lat);

    //根据全部经纬度字符串批量查询最近断层切线角度列表（与正东方向的夹角，[0,180]）
    public List<String> getClosestFaultageAngleListByLonLatsString(String lonlatsString);

    String getGeomByDivision(String province, String city, String county);
}
